package org.jeecgframework.web.service;

import java.util.List;
import java.util.Map;

import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;

public interface ZyWorkFlowService { // NOPMD by dzqThinkpad on 16-4-1 下午3:10

	/**
	 * @author xiul
	 * 2016-3-31 下午6:03:44
	 * Description 启动流程 
	 * @param configId 流程内关联表单名
	 * @param id 业务主键id
	 * @param paramsMap 参数
	 */
	public ProcessInstance startOnlineProcess(String configId,String id,Map<String,Object> paramsMap);
	
	/**
	 * @author xiul
	 * 2016-3-31 下午6:03:00
	 * Description 流程内 节点跳转方法 
	 * @param veIdString 业务主键id
	 * @param processId 流程定义key
	 * @param currentTaskDefId 当前节点key
	 * @param nextTaskDefId 跳转节点key
	 */
	public void goProcessNode(String veIdString,String processId,String currentTaskDefId,String nextTaskDefId);
	
	/**
	 * @author xiul
	 * 2016-4-7 上午10:55:15
	 * Description 推动流程 
	 * @param model 默认1
	 * @param processInstanceId 流程实例id
	 * @param nextUser 下一步处理人 可以为 多个 wang,li,zhang
	 * @param approveFlag 路线标记 
	 * @param expression 路线标记上的表达式
	 * @param string 
	 */
	public Map<String, Object> processComplete(String model,String processInstanceId,String nextUser,String approveFlag,String expression);
	
	/**@author xiul
	 * 2016-4-5 上午11:38:15
	 * Description 自定义查询sql  根据登录人查询代办的业务ID
	 * @param userName 用户名 admin
	 * @param processDefinitionKey 流程定义key 
	 * @param isPri 是否只查询指定到当前人的代办
	 * @param appointTaskNodeDefinKey 指定的查询的任务节点
	 * @return
	 */
	public List<String> queryUserProcess(String userName,String processDefinitionKey,boolean isPri,String appointTaskNodeDefinKey);
	
	/**
	 * 2016-4-5 上午11:38:15
	 * Description 自定义查询sql  根据登录人查询代办的业务ID
	 * @param userName 用户名 admin
	 * @param processDefinitionKey 流程定义key 
	 * @param isPri 是否只查询指定到当前人的代办
	 * @param appointTaskNodeDefinKey 指定的查询的任务节点
	 * @return
	 */
	public List<Map<String, Object>> queryUserProcessReList(String id,String processDefinitionKey,boolean isPri,String appointTaskNodeDefinKey);
	
	/**
	 * @author xiul
	 * 2016-4-26 上午11:16:02
	 * Description 终止流程
	 * @param planId 巡检计划业务主键ID
	 */
	public void endProcess(String planId);
	
	/**
	 * 检查task是否已办理
	 * @param taskId
	 * @return y 未办理  n 已办理
	 */
	public String checkTaskHandle(String taskId);

}
